/*
 * Ejercicio realizado por Francisco Gonzalez-Armijo Riádigos
 * para la prueba de seleccion de http://www.nomasystems.es
 */

package es.kuassivi.android.cd.adapters;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import es.kuassivi.android.cd.R;
import es.kuassivi.android.cd.beans.Company;

/**
 * Adapter CompanyListAdapter
 * Adaptador de vista para el listado de compaías, el cual implementa el listado 
 * de las compañias, mostrando el nombre de cada compañia en los campos text del listado de la vista
 * 
 * @author kuassivi <a href="mailto:kuassivi@gmail.com">kuassivi@gmail.com</a>
 * @since 0.1
 */
public class CompanyListAdapter extends BaseAdapter 
{

	/**
	 * @var LayoutInflater
	 */
	private LayoutInflater mInflater;

	/**
	 * @var List&lt;Company>
	 */
	private List<Company> mCompaniesList;

	/**
	 * Inicia el adaptador para la vista
	 * 
	 * @param context Context
	 * @param companies List&lt;Company> Listado de objetos Company
	 * @see Company
	 * @see ArrayList
	 */
	public CompanyListAdapter(Context context, List<Company> companies) 
	{
		//mInflater = LayoutInflater.from(context);
		
		super();
		
		mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);	
		
		mCompaniesList = companies;
	}

	@Override
	public int getCount() 
	{
		if (mCompaniesList == null)
			return 0;
		else
			return mCompaniesList.size();
	}

	@Override
	public Object getItem(int position) 
	{
		return mCompaniesList.get(position);
	}

	@Override
	public long getItemId(int position) 
	{
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) 
	{
		ViewHolder holder;
		
		if (convertView == null) {
			
			convertView = mInflater.inflate(R.layout.company_list_view, null);
			
			holder = new ViewHolder();
			
			holder.txt_company_name = (TextView) convertView.findViewById(R.id.txt_company_name);
			
			convertView.setTag(holder);
			
		} else {
			holder = (ViewHolder) convertView.getTag();
		}

		holder.txt_company_name.setText(mCompaniesList.get(position).getName());
		
		return convertView;
	}

	
	/**
	 * Creamos un objeto contenedor, que será un soporte de vista 
	 * indentico al objeto de vista donde queremos setear los datos
	 */
	private class ViewHolder {
		TextView txt_company_name;
	}
}
